package com.ripcore.model;

import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 路由表类，用于管理网络路由信息。
 * 提供了添加、删除、查询路由条目以及获取所有路由条目的功能。
 */
public class RoutingTable {
    /** 路由表条目映射，键为目标网络前缀，值为对应的路由条目 */
    private final Map<String, RouteEntry> entries = new ConcurrentHashMap<>();

    /**
     * 根据目标网络前缀获取路由条目
     * @param prefix 目标网络前缀
     * @return 对应的路由条目，如果不存在则返回null
     */
    public RouteEntry get(String prefix) { return entries.get(prefix); }

    /**
     * 添加或更新路由条目
     * @param prefix 目标网络前缀
     * @param e 路由条目
     */
    public void put(String prefix, RouteEntry e) { entries.put(prefix, e); }

    /**
     * 根据目标网络前缀移除路由条目
     * @param prefix 目标网络前缀
     */
    public void remove(String prefix) { entries.remove(prefix); }

    /**
     * 获取所有路由条目集合
     * @return 包含所有路由条目的集合
     */
    public Collection<RouteEntry> entries() { return entries.values(); }

    /**
     * 获取路由表映射
     * @return 路由表条目映射
     */
    public Map<String, RouteEntry> getMap() { return entries; }
}